// 'use strict'
/**
 *  工具函数
 *  引入node路径
 */
const path = require('path')

function resolve(dir) {
    return path.join(__dirname, dir)
}

const webpack = require('webpack')
module.exports = {
    // 配置echarts
    // Vue-ECharts 默认在 webpack 环境下会引入未编译的源码版本，如果你正在使用官方的 Vue CLI 来创建项目，可能会遇到默认配置把 node_modules 中的文件排除在 Babel
    transpileDependencies: ['vue-echarts', 'resize-detector'],
    publicPath: process.env.NODE_ENV === 'production' ? '' : './', // 基本路径
    outputDir: 'dist',
    lintOnSave: false, // 关闭格式检查
    productionSourceMap: false, // 打包时不会生成 .map 文件，加快打包速度
    devServer: {
        host: 'localhost',
        port: 8080,
        https: false, // https:{type:Boolean}
        open: false,
        proxy: {
            '/apiv1': {
                // target: 'http://127.0.0.1:8092/positionsystem/api', //需要代理的接口(服务器测试需要加“positionsystem”的前缀)
                target: 'http://127.0.0.1:8092/api', //本地测试不需要前缀
                changeOrigin: true, //目标服务器
                ws: true, //是否跨域
                pathRewrite: {
                    '^/apiv1': '' //重定向, 为空则API作为标识，不为空则将请求url的API重定向至指定路径
                }
            }
        }
    },
    // css 配置
    css: {
        sourceMap: true,
        loaderOptions: {
            // 全局引入 scss 的variables变量文件及 混入方法
            sass: {
                prependData: `@import "@/style/theme/_mixin.scss";`
            }
        }
    },
    configureWebpack: {
        // page titleF
        name: 'TEST',
        // 制定@符为src下路径
        resolve: {
            alias: {
                '@': resolve('src')
            }
        },
        //警告 webpack 的性能提示
        performance: {
            maxEntrypointSize: 400000
        }
    },
    chainWebpack(config) {
        // 设置svg的引入
        config.module
            .rule('svg')
            .exclude.add(resolve('src/icons'))
            .end()
        config.module
            .rule('icons')
            .test(/\.svg$/)
            .include.add(resolve('src/icons'))
            .end()
            .use('svg-sprite-loader')
            .loader('svg-sprite-loader')
            .options({
                symbolId: 'icon-[name]'
            })
            .end()
        // 压缩生产环境的打包体积
        config.when(process.env.NODE_ENV !== 'development', (config) => {
            config.optimization.splitChunks({
                chunks: 'all',
                cacheGroups: {
                    libs: {
                        name: 'chunk-libs',
                        test: /[\\/]node_modules[\\/]/,
                        priority: 10,
                        chunks: 'initial' // 只打包初始时依赖的第三方
                    },
                    elementUI: {
                        name: 'chunk-elementUI', // 单独将 elementUI 拆包
                        priority: 20, // 权重要大于 libs 和 app 不然会被打包进 libs 或者 app
                        test: /[\\/]node_modules[\\/]element-ui[\\/]/
                    }
                }
            })
            config.optimization.runtimeChunk('single')
        })
    }

}
